home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / tc_btree.zip / CSTRUCT.H < prev    next >
Text File  |  1989-02-01  |  2KB  |  76 lines

  1. #define     MAXKEYLEN       25
  2. #define     MAXDATARECSIZE  342
  3. #define     PAGESIZE        16
  4. #define     ORDER           8
  5. #define     MAXHEIGHT       5
  6. #define     PGRECSTKSIZE    5
  7. #define     TRUE            1
  8. #define     FALSE           0
  9.  
  10. typedef char  tastring[64];
  11.  
  12. typedef char  takeystr[MAXKEYLEN + 1];
  13.  
  14. typedef char  databuf[MAXDATARECSIZE];
  15.  
  16. typedef struct {
  17.                 int     numrecs;
  18.                 int     reclen;
  19.                 int     firstfree;
  20.                 int     numberfree;
  21.                 int     rootref;
  22.                 int     dupe;
  23.                 FILE  * fp;
  24.         } datafile;
  25.  
  26. typedef struct {
  27.             int  dataref;
  28.             int  pageref;
  29.             takeystr key;
  30.         } taitem;
  31.  
  32. typedef struct {
  33.             int     itemsonpage;
  34.             int     bckwpageref;
  35.             taitem  itemarray[PAGESIZE];
  36.         } tapage;
  37.  
  38. typedef struct {
  39.             int     pageref;    /* page we're at.  where we're aheading.  */
  40.             int     itemndx;    /* legal itemndx range: -1..itemsonpage-1 */
  41.         } tasearchstep;
  42.  
  43. typedef tasearchstep    tapath[MAXHEIGHT];
  44.  
  45. typedef struct {
  46.             tapath     path;
  47.             int        pnx;
  48.             int        rootref;
  49.             int        keyl;
  50.             int        allowduplkeys;
  51.             datafile * dfp;
  52.         } indexfile;
  53.  
  54. typedef struct {
  55.             tapage      page;
  56.             int         pageref;
  57.             int         updated;
  58.             indexfile * nfp;
  59.         } tapagerec;
  60.  
  61. typedef tapagerec   tapagerecstack[PGRECSTKSIZE];
  62.  
  63. typedef int     tapagemap[PGRECSTKSIZE];
  64.  
  65. typedef union {
  66.             tapagerec   pagerec;
  67.             databuf     datarec;
  68.             int         nextfree;
  69.         } tarecordbuffer;
  70.  
  71. /*
  72.  * DataRec and PageRec are never referenced by name.  This merely insures
  73.  * TaRecordBuffer is large enough to accommodate an index page size as well
  74.  * as data record size.  The integer, i, points to the nextfree record.
  75.  */
  76.